<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //字符串
        //1、基本包装数据类型
        // var str = 'hello';
        // console.log(str);
        //对象才有 属性和方法  复杂数据类型也有 属性和方法
        //简单数据为什莫会有length属性呢
        //这就涉及到了基本包装数据类型：就是把简单数据类型 包装成复杂数据类型
        //上述两行代码执行的过程是
        //（1）、首先把简单数据类型hello 包装成复杂数据类型
        // var temp = new String('hello')
        //(2)、把临时变量的值赋给str
        // str = temp;
        //(3)、销毁这个临时变量
        // temp = null

        //2、字符串里面的值本身是不可变的，改变的是地址
        //根据字符返回位置  str.indexOf('这个地方写要查找的字符'，起始位置)
        //实例：
        // var str = '春风不度玉门关，明天不会下雨';
        // //输出不的索引地址
        // console.log(str.indexOf('不',3));

        //3、求某个字符串出现的位置及次数
        //查找abcodfoxyozzopp中的o出现的次数以及位置
        //核心算法：先查找第一个o的位置
        //然后，只要indexOf 返回的结果不是-1的话 就继续往后查找
        //indexOf只能查找一个，所以后面的再查找的话，就在索引加1
        // var str = 'abcodfoxyozzopp';
        // var index = str.indexOf('o');
        // var num = 0;
        // while(index !== -1){
        //     console.log(index);
        //     num++;
        //     index = str.indexOf('o',index + 1)
        // }
        // console.log('o出现的次数是：'+num);

        //4、根据位置返回字符串
        //（1）、charAt()
        // var str = 'hello';
        // console.log(str.charAt(2));  //l
        //(2)、charCodeAt() 输出的是ASC的值
        // console.log(str.charCodeAt(1));
        //（3）、str[index]
        // console.log(str[0]);

        //5、统计出现次数最多的字符串
        //(1)、判断一个对象有没有属性  对象['属性名']
        // var obj = {
        //     name:'小明'
        // }
        // if(obj['age']){
        //     console.log('有该属性');
        // }else{
        //     console.log('没有该属性');
        // }

        //（2）、算法核心：利用charAt()  遍历这个对象
        //把字符串都存给对象，如果这个对象没有这个属性的话就是 1 ，如果存在了就+1
        //遍历对象，得到最大值和该字符
        var str = 'abcoefoxozzopp'
        var o = {};  //定义一个空的对象
        var chs = ''; //定义一个空的字符串
        for(var i = 0; i < str.length; i++){
            var ch = str.charAt(i); //获取字符串中的每个字符给变量ch
            //如果对象中存在这个字符的话就加1
            //如果不存在的话就是1
            if(o[ch]){  
                o[ch]++
            }else{
                o[ch] = 1
            }
        }
        console.log(o);//这样就可以打印输出每个字符串出现的次数
        //遍历对象，得到最大值
        var max = 0;
        //通过for in可以遍历对象
        //如果属性值大于max就把属性值赋给max
        for(var k in o){
            //k得到的是属性名
            //o[k]得到的是属性值
            if(o[k] > max){
                max = o[k]
                chs = k;
            }
        }
        console.log(max);
        console.log(chs);
       
      
    </script>
</body>
</html>